﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MacroprocesosWinForms.Administrador.DialogBox
{
    public partial class Dialog_BuscarProceso : Form
    {
        private Unimaq.Macroprocesos.AccesoDatos.TipoProceso tipoProceso;
        private Unimaq.Macroprocesos.AccesoDatos.Proceso selectedProceso;
        private Unimaq.Macroprocesos.AccesoDatos.Empresa selectedEmpresa;

        public Unimaq.Macroprocesos.AccesoDatos.Proceso SelectedProceso
        {
            get { return selectedProceso; }
            set { selectedProceso = value; }
        }
                    

        public Dialog_BuscarProceso()
        {
            InitializeComponent();
        }
        public Dialog_BuscarProceso(Unimaq.Macroprocesos.AccesoDatos.Empresa selEmpresa) : this()
        {
            selectedEmpresa = selEmpresa;
        }

        private void Dialog_BuscarProceso_Load(object sender, EventArgs e)
        {
            //cargamos el tipoProceso
            if (selectedEmpresa != null)
            {
                Unimaq.Macroprocesos.LogicaNegocio.TipoProcesoBLL tipoProcesoBLL = new Unimaq.Macroprocesos.LogicaNegocio.TipoProcesoBLL();
                tipoProceso = tipoProcesoBLL.GetCodigoProceso();

                if (tipoProceso != null)
                {
                    txtPrefCodigo.Text = tipoProceso.Codigo.Trim();
                    this.Text += string.Format(" - Empresa: {0}", selectedEmpresa.NombreEmpresa.Trim());
                }   
            }                      
        }

        private void rbCodigo_CheckedChanged(object sender, EventArgs e)
        {
            txtSubCodigo.ResetText();

            if (rbCodigo.Checked)
                txtSubCodigo.Enabled = true;
            else
                txtSubCodigo.Enabled = false;
        }

        private void rbNombre_CheckedChanged(object sender, EventArgs e)
        {
            txtNombreProceso.ResetText();

            if (rbNombre.Checked)
                txtNombreProceso.Enabled = true;
            else
                txtNombreProceso.Enabled = false;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            List<Unimaq.Macroprocesos.AccesoDatos.Proceso> lista = new List<Unimaq.Macroprocesos.AccesoDatos.Proceso>();
            Unimaq.Macroprocesos.LogicaNegocio.ProcesoBLL procesoBLL = new Unimaq.Macroprocesos.LogicaNegocio.ProcesoBLL();

            if (rbCodigo.Checked)
            {
                lista = procesoBLL.Buscar(selectedEmpresa, "codigo",string.Format("{0}-{1}",txtPrefCodigo.Text.Trim(), txtSubCodigo.Text.Trim()));
            }
            else if (rbNombre.Checked)
            {
                lista = procesoBLL.Buscar(selectedEmpresa, "nombre", txtNombreProceso.Text.Trim());
            }

            gridBuscarProceso.DataSource = lista;
        }

        private void gridBuscarProceso_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridBuscarProceso.DataSource != null)
            {
                gridBuscarProceso.Columns["Id"].Visible = false;
                gridBuscarProceso.Columns["IdPadreProceso"].Visible = false;
                gridBuscarProceso.Columns["IdEmpresa"].Visible = false;
                gridBuscarProceso.Columns["IdTipoProceso"].Visible = false;
                gridBuscarProceso.Columns["Nombre"].HeaderText = "Proceso";
                gridBuscarProceso.Columns["NumeroProceso"].Visible = false;
                gridBuscarProceso.Columns["CodigoProceso"].DisplayIndex = 1;
                gridBuscarProceso.Columns["CodigoProceso"].HeaderText = "Código";
                gridBuscarProceso.Columns["RutaAcceso"].Visible = false;
                gridBuscarProceso.Columns["Documento"].Visible = false;
                gridBuscarProceso.Columns["Empresa"].Visible = false;
                gridBuscarProceso.Columns["Proceso1"].Visible = false;
                gridBuscarProceso.Columns["Proceso2"].Visible = false;
                gridBuscarProceso.Columns["TipoProceso"].Visible = false;
            }
        }

        private void gridBuscarProceso_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && e.Button == MouseButtons.Left)
            {
                Unimaq.Macroprocesos.AccesoDatos.Proceso selProceso =
                    gridBuscarProceso.Rows[e.RowIndex].DataBoundItem as Unimaq.Macroprocesos.AccesoDatos.Proceso;

                if (selProceso != null)
                {
                    SelectedProceso = selProceso;
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
        }
    }
}
